package userlist

import (
	"encoding/json"
	"huling/utils/results"
	utils "huling/utils/tool"
	"io/ioutil"
	"strconv"
	"time"

	"github.com/gin-gonic/gin"
)

// 获取用户列表
func GetList(context *gin.Context) {
	title := context.DefaultQuery("name", "")
	status := context.DefaultQuery("status", "0")
	page := context.DefaultQuery("page", "1")
	startime := context.DefaultQuery("startime", "")
	endtime := context.DefaultQuery("endtime", "")
	_pageSize := context.DefaultQuery("pageSize", "10")
	pageNo, _ := strconv.Atoi(page)
	pageSize, _ := strconv.Atoi(_pageSize)
	//当前用户
	getuser, _ := context.Get("user")
	user := getuser.(*utils.UserClaims)
	whereMap := DB().Table("wxapp_user").Where("uid", user.ID)
	whereMap2 := DB().Table("wxapp_user").Where("uid", user.ID)
	if status != "0" {
		whereMap.Where("status", status)
		whereMap2.Where("status", status)
	}
	if title != "" {
		whereMap.Where("name", "like", "%"+title+"%")
		whereMap2.Where("name", "like", "%"+title+"%")
	}
	if startime != "" {
		//要转换成时间日期的格式模板（go诞生时间，模板必须是这个时间）
		timeTmeplate := "2006-01-02 15:04:05"
		tim, _ := time.Parse(timeTmeplate, startime)
		startime_int := tim.Unix()
		//结束时间
		endtim, _ := time.Parse(timeTmeplate, endtime)
		endtime_int := endtim.Unix()
		whereMap.Where("createtime", ">=", startime_int)
		whereMap.Where("createtime", "<=", endtime_int)
		whereMap2.Where("createtime", ">=", startime_int)
		whereMap2.Where("createtime", "<=", endtime_int)
	}
	list, err := whereMap.Limit(pageSize).Page(pageNo).Order("createtime desc").Get()
	if err != nil {
		results.Failed(context, "加载数据失败", err)
	} else {
		var totalCount int64
		totalCount, _ = whereMap2.Count()
		results.Success(context, "获取用户列表", map[string]interface{}{
			"page":     pageNo,
			"pageSize": pageSize,
			"total":    totalCount,
			"items":    list,
		}, nil)
	}
}

// 更新资料
func SaveUser(context *gin.Context) {
	//获取post传过来的data
	body, _ := ioutil.ReadAll(context.Request.Body)
	var parameter map[string]interface{}
	_ = json.Unmarshal(body, &parameter)
	delete(parameter, "pendingStatus")
	res2, err := DB().Table("wxapp_user").Where("id", parameter["id"]).Data(parameter).Update()
	if err != nil {
		results.Failed(context, "更新失败！", err)
	} else {
		msg := "更新成功！"
		if res2 == 0 {
			msg = "暂无数据更新"
		}
		results.Success(context, msg, res2, nil)
	}
}

// 更新状态
func UpLock(context *gin.Context) {
	//获取post传过来的data
	body, _ := ioutil.ReadAll(context.Request.Body)
	var parameter map[string]interface{}
	_ = json.Unmarshal(body, &parameter)
	b_ids, _ := json.Marshal(parameter["ids"])
	var ids_arr []interface{}
	json.Unmarshal([]byte(b_ids), &ids_arr)
	res2, err := DB().Table("wxapp_user").WhereIn("id", ids_arr).Data(map[string]interface{}{"status": parameter["status"]}).Update()
	if err != nil {
		results.Failed(context, "更新失败！", err)
	} else {
		msg := "更新成功！"
		if res2 == 0 {
			msg = "暂无数据更新"
		}
		results.Success(context, msg, res2, nil)
	}
}
